package com.indictor.bean;

import java.math.BigDecimal;
import java.util.Map;

public final class IndicatorAdapter {

    private final IndicatorComputer computer;
    private final IndicatorManager manager;

    public IndicatorAdapter(IndicatorComputer indicatorComputer, IndicatorManager indicatorManager) {
        this.computer = indicatorComputer;
        this.manager = indicatorManager;
    }

    /**
     * 以后默认值也要动态修改
     * 根据关键字查询到对应的公式，然后根据传入的键和值进行计算
     *
     * @param key 关键字
     * @param map 参数的键和值
     * @return 根据关键字计算的计算结果
     */
    public BigDecimal compute(String key, Map<String, BigDecimal> map) {
        return compute((key), 24, BigDecimal.ROUND_HALF_UP, map);
    }

    /**
     * 根据关键字查询到对应的公式，然后根据传入的键和值进行计算
     *
     * @param key 关键字
     * @param map 参数的键和值
     * @param mode 四舍五入等方式
     * @param precent 保留小数位
     * @return 根据关键字计算的计算结果
     */
    public BigDecimal compute(String key, int precent, int mode, Map<String, BigDecimal> map) {
        return computer.compute(manager.findIndicator(key), precent, mode, map);
    }

    public BigDecimal compute(String key) {
        return computer.compute(key);
    }
}
